Le logiciel de calcul de structure RFEM 6 constitue la base d'une famille de logiciels modulaires. Le logiciel de base RFEM 6 permet de définir la structure, les matériaux et les sollicitations de structures planes et spatiales composées de barres, plaques, voiles et coques. Vous pouvez aussi travailler sur des structures combinées constituées de solides et d'éléments de contact.
Grâce à RSTAB, l'ingénieur structure a accès à un logiciel de structures filaires 3D qui répond aux exigences du calcul de structure moderne et reflète l'état actuel des techniques de construction.
Vous passez souvent trop de temps à calculer des sections ? Les logiciels Dlubal et le programme autonome RSECTION vous facilitent la tâche en déterminant et en effectuant une analyse des contraintes pour différentes sections.
Savez-vous toujours d'où vient le vent ? Du côté de l'innovation, bien sûr ! Avec RWIND 2, vous disposez d'un programme utilisant une soufflerie numérique pour la simulation numérique des flux de vent. Le programme simule ces flux autour de n'importe quelle géométrie de bâtiment et détermine les charges de vent sur les surfaces.
Vous souhaitez obtenir un aperçu des zones de charge de neige, des zones de vent et des zones sismiques ? Si tel est le cas, vous êtes au bon endroit. Utilisez notre outil de géolocalisation pour déterminer rapidement et efficacement les zones de neige, de vent et de sismicité selon l'Eurocode et d'autres normes internationales.
Souhaitez-vous tester la puissance des logiciels Dlubal Software ? C'est votre chance ! Avec la version complète gratuite de 90 jours, vous pouvez tester l'ensemble de nos logiciels.
Dans l'exemple de programme, un porte-à-faux est d'abord créé à partir d'un IPE 200. Celui-ci est chargé avec une charge de barre de 3,5 kN et le calcul est effectué.
Ce tableau est accessible à la ligne 34 :
La méthode ResultTables.NodesDeformations() requiert 3 arguments. Le type de résultats à lire doit d'abord être déterminé. Ces types de résultats peuvent être des :
ResultTables.NodesDeformations()
sein.
Le numéro du cas de charge, de la combinaison de charges, etc. doit ensuite être indiqué. Enfin, le numéro de nœud doit être transféré à la méthode.
La valeur de retour d de la méthode est une liste contenant un dictionnaire. Sur la ligne 37, d est affiché en entier. La ligne 40 indique comment accéder à une valeur spécifique. [0] est l'index de la liste et ['displacement_z'] est la clé du dictionnaire.
d
[0]
['displacement_z']
Les déformations des barres peuvent être lues à l'aide de la fonction « GetMemberDeformations() », par exemple. Cette fonction attend un nombre, le type de méthode de comptage des barres (numéro de barre/numéro dans la liste) et le système de coordonnées à utiliser. Vous pouvez choisir d'utiliser le système d'axes local, le système d'axes principal ou le système de coordonnées global :
Sub test_results_member_axis ()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'obtenir l'interface pour le calculDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'obtenir l'interface pour les résultatsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'obtenir les déformations dans le système de coordonnées localDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'obtenir les déformations dans le système de coordonnées globalDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'obtenir les déformations dans le système de coordonnées principalDim memDefs_P() As RFEM5.MemberDeformationsmemDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)e:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Le petit programme lit les déformations locales (memDefs_L) dans les axes de barre et les axes principaux (memDefs_P) et les déformations globales dans les axes de barre (memDefs_G).
Comme tous les autres résultats, la résultante d'une section peut être lue via IModel3 → ICalculation2 → IResults2. L'interface avec les résultats est fournie par la fonction GetResultant, qui renvoie ensuite la structure ResultantForce lors de la définition du numéro de section et du type de distribution des résultats. Cette structure inclut, entre autres, les efforts et les moments comme vecteurs :
La fonction « SelectObjects » de l'interface IModelData (ou IModeldata2, etc.) permet de sélectionner les objets. Cette fonction a besoin du type d'objet et du/des numéro(s) d'objet sous forme de chaîne de caractères. Voici un court exemple :
Sub select_objects()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo e Dim iModdata As IModelData2 Set iModdata = model.GetModelData ' enable Selections iModdata.EnableSelections True ' select nodes 2-3 and lines 1 and 3 iModdata.SelectObjects ModelObjectType.NodeObject, "2-3" iModdata.SelectObjects ModelObjectType.LineObject, "1,3" ' deselect nodes and lines iModdata.SelectObjects ModelObjectType.NodeObject, "" iModdata.SelectObjects ModelObjectType.LineObject, "" e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseSet iModdata = NothingSet model = NothingEnd Sub
Les sélections sont activées dans la partie supérieure, puis les nœuds 2 à 3 ainsi que les lignes 1 et 3 sont sélectionnés. Les lignes et les nœuds sont ensuite désélectionnés à l'aide d'une chaîne vide.
Si vous souhaitez lire ou modifier les objets sélectionnés, vous devez utiliser la fonction « IModelData.EnableSelections » (également disponible dans le code ci-dessus). Si la fonction est appelée avec « True », seuls les nœuds sélectionnés sont lus avec la fonction « IModelData.GetNodes() », par exemple.
Les contraintes d'une surface peuvent être affichées via l'interface COM. Vous avez d'abord besoin de l'interface pour le modèle (IModel), puis de l'interface pour le calcul (ICalculation2). À l'aide de cette interface, vous pouvez obtenir l'interface pour les résultats (IResults2) :
Sub stresses_surfaces_example()Dim iApp As RFEM5.ApplicationDim iModel As RFEM5.modelSet iModel = GetObject(, "RFEM5.Model")On Error GoTo EIf Not iModel Is Nothing Then ' get interface from model Set iApp = iModel.GetApplication iApp.LockLicense ' get interface from calculation Dim iCalc As RFEM5.ICalculation2 Set iCalc = iModel.GetCalculation ' get interface from results from loadcase 1 Dim iRes As RFEM5.IResults2 Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1) ' get equivalent stresses Dim str_equ() As RFEM5.SurfaceEquivalentStresses str_equ = iRes.GetSurfaceEquivalentStresses(1, AtNo, VonMisesHypothesis) End IfE:If Err.Number <> 0 Then MsgBox Err.Number & " " & Err.descriptionEnd IfIf Not iApp Is Nothing Then iApp.UnlockLicenseEnd If
La fonction GetSurfaceEquivalentStresses requiert la spécification de l'hypothèse de calcul. Dans ce cas, les résultats de la contrainte de von Mises sont affichés. Veuillez noter que l'interface COM utilise des unités SI, la contrainte est donc transférée en N/m².
Sub test_section()' get interface from the opened model and lock the licence/program Dim iModel As RFEM5.IModel3 Set iModel = GetObject(, "RFEM5.Model") iModel.GetApplication.LockLicense On Error GoTo E Dim iSecs As RFEM5.ISections Set iSecs = iModel.GetSections()
' first delete all sections iSecs.PrepareModification iSecs.DeleteObjects ("All") iSecs.FinishModification ' set section on solid Dim sec As RFEM5.Section sec.EdgePointA.X = 2 sec.EdgePointA.Y = 5 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 8 sec.EdgePointB.Z = 0 sec.no = 1 sec.Name = "solid section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = False sec.Type = SectionOnSolidSectionLine sec.ObjectList = "1" iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' set section on surface sec.EdgePointA.X = 2 sec.EdgePointA.Y = 0 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 3 sec.EdgePointB.Z = 0 sec.no = 2 sec.Name = "surface section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = True sec.Type = SectionViaSurfacePlane sec.ObjectList = "1" sec.Vector.X = 0 sec.Vector.Y = 0 sec.Vector.Z = 1 iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' get results Dim iCalc As ICalculation2 Set iCalc = iModel.GetCalculation Dim iRes As IResults2 Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1) Dim secRes() As RFEM5.SectionResult secRes = iRes.GetResultsInSection(2, AtNo, ShearForceVy,ContinuousDistributionWithinObjects, False)
Pour transférer plusieurs éléments, vous devez d'abord créer un champ (tableau) dans VBA :
Dim nodes(0 to 2) as RFEM5.Node
Vous pouvez ensuite transférer tous les nœuds à la fois au champ (ici, les trois éléments 0,1,2) à l'aide de la méthode IModelData.SetNodes ().
Cette méthode est également applicable par exemple au éléments structuraux suivants :
IModelData.SetLines()
IModelData.SetMembers()
IModelData.SetSurfaces()